package com.lwl.blue.seven.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * 合同详情DTO
 * @author system
 * @since 2025-09-17
 */
@Data
public class Contract7DetailDTO {

    /**
     * 采购合同号内码(主键)
     */
    private Long contractId;

    /**
     * 合同号
     */
    private String contractNumber;

    /**
     * 采购合同号核销内码
     */
    private Long contractIdWriteoff;

    /**
     * 采购合同核销号
     */
    private String contractNumberWriteoff;

    /**
     * 末级业务单据号
     */
    private String finalBusinessCode;

    /**
     * 合同名称
     */
    private String contractName;

    /**
     * 交易类型
     */
    private String transactionType;

    /**
     * 供应商ID
     */
    private Integer supplierId;

    /**
     * 供应商名称
     */
    private String supplierName;

    /**
     * 我方签约主体（采购方）
     */
    private String buyingEntity;

    /**
     * 采购员
     */
    private String purchaser;

    /**
     * 合同生效日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date effectiveDate;

    /**
     * 合同失效日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date expiryDate;

    /**
     * 合同总额
     */
    private BigDecimal totalAmount;

    /**
     * 付款条件
     */
    private String paymentTerms;

    /**
     * 状态：10准备, 11驳回, 15修改, 30待审, 70执行, 80完结
     */
    private Integer status;

    /**
     * 状态名称
     */
    private String statusName;

    /**
     * 创建人ID
     */
    private Long createUserId;

    /**
     * 创建人名称
     */
    private String createUserName;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 修改人ID
     */
    private Long updateUserId;

    /**
     * 修改人名称
     */
    private String updateUserName;

    /**
     * 最后修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 审核人ID
     */
    private Long auditPersonId;

    /**
     * 审核人名称
     */
    private String auditPersonName;

    /**
     * 审核时间
     */
    private Date auditTime;

    /**
     * 版本号（用于乐观锁）
     */
    private Integer version;

    /**
     * 红冲标记：0正常，1红冲
     */
    private Boolean redFlag;

    /**
     * 外部采购订单核销内码
     */
    private Long externalOrderId;

    /**
     * 外部采购订单核销外码
     */
    private String externalOrderCode;

    /**
     * 外部系统类型
     */
    private String externalSystemType;

    /**
     * 外部系统单据内码
     */
    private String externalSystemDocId;

    /**
     * 外部系统单号
     */
    private String externalSystemOrderNo;

    /**
     * 业务来源
     */
    private String businessSource;

    /**
     * 业务来源说明
     */
    private String businessSourceDesc;

    /**
     * 来源单据号
     */
    private String sourceDocNo;

    /**
     * 业务单据编码
     */
    private String businessDocCode;

    /**
     * 是否删除：0未删除，1已删除
     */
    private Boolean isDeleted;

    /**
     * 备注
     */
    private String remarks;

    /**
     * 商品明细列表
     */
    private List<Contract7DetailItemDTO> itemList;
}